import uniStarterConfig from "@/uni-starter.config.js";
//应用初始化页
// #ifdef APP
import checkUpdate from "@/uni_modules/uni-upgrade-center-app/utils/check-update";
import callCheckVersion from "@/uni_modules/uni-upgrade-center-app/utils/call-check-version";

// 实现，路由拦截。当应用无访问摄像头/相册权限，引导跳到设置界面 https://ext.dcloud.net.cn/plugin?id=5095
import interceptorChooseImage from "@/uni_modules/json-interceptor-chooseImage/js_sdk/main.js";
interceptorChooseImage();

// #endif
const db = uniCloud.database();
export default async function () {
  const debug = uniStarterConfig.debug;

  // uniStarterConfig挂载到getApp().globalData.config
  setTimeout(() => {
    getApp({
      allowDefault: true,
    }).globalData.config = uniStarterConfig;
  }, 1);

  // 初始化appVersion（仅app生效）
  initAppVersion();

  //clientDB的错误提示
  function onDBError({
    code, // 错误码详见https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=returnvalue
    message,
  }) {
    console.log("onDBError", {
      code,
      message,
    });
    // 处理错误
    console.error(code, message);
  }
  // 绑定clientDB错误事件
  db.on("error", onDBError);

  //拦截云对象请求
  uniCloud.interceptObject({
    async invoke({
      objectName, // 云对象名称
      methodName, // 云对象的方法名称
      params, // 参数列表
    }) {
      if (
        objectName == "uni-id-co" &&
        (methodName.includes("loginBy") ||
          ["login", "registerUser"].includes(methodName))
      ) {
        console.log("执行登录相关云对象");
        params[0].inviteCode = await new Promise((callBack) => {
          uni.getClipboardData({
            success: function (res) {
              console.log("剪切板内容：" + res.data);
              if (res.data.slice(0, 18) == "uniInvitationCode:") {
                let uniInvitationCode = res.data.slice(18, 38);
                console.log(
                  "当前用户是其他用户推荐下载的,推荐者的code是：" +
                    uniInvitationCode
                );
                // uni.showModal({
                // 	content: '当前用户是其他用户推荐下载的,推荐者的code是：'+uniInvitationCode,
                // 	showCancel: false
                // });
                callBack(uniInvitationCode);
                //当前用户是其他用户推荐下载的。这里登记他的推荐者id 为当前用户的myInviteCode。判断如果是注册
              } else {
                callBack();
              }
            },
            fail() {
              console.log("error--");
              callBack();
            },
            complete() {
              // #ifdef MP-WEIXIN
              uni.hideToast();
              // #endif
            },
          });
        });
        // console.log(params);
      }
      // console.log(params);
    },
    success(e) {
      console.log(e);
    },
    complete() {},
    fail(e) {
      console.error(e);
      // if (debug) {
      // 	uni.showModal({
      // 		content: JSON.stringify(e),
      // 		showCancel: false
      // 	});
      // }else{
      // 	uni.showToast({
      // 		title: '系统错误请稍后再试',
      // 		icon:'error'
      // 	});
      // }
    },
  });

  // #ifdef APP
  // 监听并提示设备网络状态变化
  uni.onNetworkStatusChange((res) => {
    console.log(res.isConnected);
    console.log(res.networkType);
    if (res.networkType != "none") {
      uni.showToast({
        title: "当前网络类型：" + res.networkType,
        icon: "none",
        duration: 3000,
      });
    } else {
      uni.showToast({
        title: "网络类型：" + res.networkType,
        icon: "none",
        duration: 3000,
      });
    }
  });
  // #endif
}
/**
 * // 初始化appVersion
 */
function initAppVersion() {
  // #ifdef APP
  let appid = plus.runtime.appid;
  plus.runtime.getProperty(appid, (wgtInfo) => {
    let appVersion = plus.runtime;
    let currentVersion =
      appVersion.versionCode > wgtInfo.versionCode ? appVersion : wgtInfo;
    getApp({
      allowDefault: true,
    }).appVersion = {
      ...currentVersion,
      appid,
      hasNew: false,
    };
    // 检查更新小红点
    callCheckVersion().then((res) => {
      // console.log('检查是否有可以更新的版本', res);
      if (res.result.code > 0) {
        // 有新版本
        getApp({
          allowDefault: true,
        }).appVersion.hasNew = true;
        console.log(checkUpdate());
      }
    });
  });
  // 检查更新
  // #endif
}
